package j03zuoye;
/*
工人操作
创建一个Worker类, 包含姓名name, 年龄age, 工资salary属性, 包含一个work方法(打印xx在工作, xx是name的值).

   在ListTest类的main方法里, 创建一个元素类型是Worker的列表, 向列表中添加3个工人, 工人信息如下:

   | 姓名     | 年龄 | 薪资 |
   | -------- | ---- | ---- |
   | zhangsan | 21   | 3000 |
   | lisi     | 25   | 3600 |
   | wangwu   | 22   | 3200 |

   在lisi之前插入一个工人, 信息如下: 姓名zhaoliu, 年龄23, 薪资3300.

   删除工人姓名是wangwu的工人

   利用迭代器遍历列表，对 List 中所有的工人调用 work 方法。

   从控制台接收一个工人信息, 封装成Worker对象, 如果List中不存在该工人, 则添加该工人到List中.

   > Worker类需要包含equals方法. 建议hashCode方法一并包含
 */

import java.util.*;

class Worker{
    String name;
    int age;
    int salary;

    public Worker(String name, int age, int salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public void work() {
        System.out.println(name+"在工作");
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Worker worker = (Worker) o;
        return age == worker.age && salary == worker.salary && Objects.equals(name, worker.name);
    }

    @Override
    public String toString() {
        return "Worker{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}
public class Z2 {
    public static void main(String[] args) {
        /*
        | 姓名     | 年龄 | 薪资 |
   | -------- | ---- | ---- |
   |  | 21   | 3000 |
   | lisi     | 25   | 3600 |
   | wangwu   | 22   | 3200 |
         */
        List<Worker> arr = new LinkedList<>();
        arr.add(new Worker("zhangsan",21,3000));
        arr.add(new Worker("lisi",25,3600));
        arr.add(new Worker("wangwu",22,3200));

        arr.add(1,new Worker("zhaoliu", 23, 3300));
        System.out.println("arr = " + arr);

        Iterator<Worker> it = arr.iterator();
        while (it.hasNext()){
            Worker temp = it.next();
            temp.work();
            if(temp.name.equals("wangwu")){
                it.remove();
            }
        }
        System.out.println("arr = " + arr);

        boolean isHave = arr.contains(
                new Worker("lisi",25,3600)
        );
        System.out.println("isHave = " + isHave);
    }
}
